package pro.cherish.knowledgeruntime.web.session;

import pro.cherish.knowledgecmomon.entity.BaseException;

import java.util.concurrent.TimeUnit;

/**
 * @author 创建人：cherish
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2019-11-03 cherish 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：ISessionService
 * @Description 功能说明：session操作服务
 * <p>
 * TODO
 * </p>
 * **********************************************************************
 * @date 创建日期： 2019-11-03 cherish
 */
public interface ISessionService {

    /**
     * 设置commonSession，保存会话
     * @param commonSession 会话
     * @throws BaseException
     */
    void set(CommonSession commonSession) throws BaseException;

    /**
     * 获取commonSession
     * @param token 令牌
     * @return
     * @throws BaseException
     */
    CommonSession get(String token) throws BaseException;

    /**
     * 移除token对应会话
     * @param token 令牌
     * @throws BaseException
     */
    void remove(String token) throws BaseException;

    /**
     * 保存定期过时会话
     * @param token 令牌
     * @param session 会话
     * @param c 过期时间数
     * @param timeUnit 时间单位
     * @throws BaseException
     */
    void set(String token, Object session, long c , TimeUnit timeUnit) throws BaseException;

    /**
     * 获取会话
     * @param token 令牌
     * @param clazz 类类型
     * @param <T>
     * @return
     * @throws BaseException
     */
    <T> T get(String token, Class<T> clazz) throws BaseException;
}
